// 数据字典管理API接口
import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:8080',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 可以在这里添加token等认证信息
    // config.headers.Authorization = `Bearer ${getToken()}`
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    console.error('API请求错误:', error)
    return Promise.reject(error)
  }
)

// 数据字典API接口
export const dataDictionaryApi = {
  // 分页查询数据字典
  getPage(params) {
    return api.get('/api/dbmanager/data-dictionary/page', { params })
  },

  // 根据ID查询数据字典
  getById(id) {
    return api.get(`/api/dbmanager/data-dictionary/${id}`)
  },

  // 新增数据字典
  create(data) {
    return api.post('/api/dbmanager/data-dictionary', data)
  },

  // 更新数据字典
  update(id, data) {
    return api.put(`/api/dbmanager/data-dictionary/${id}`, data)
  },

  // 删除数据字典
  delete(id) {
    return api.delete(`/api/dbmanager/data-dictionary/${id}`)
  },

  // 批量删除数据字典
  batchDelete(ids) {
    return api.delete('/api/dbmanager/data-dictionary/batch', { data: ids })
  },

  // 更新字典启用状态
  updateEnabled(id, isEnabled) {
    return api.put(`/api/dbmanager/data-dictionary/${id}/enabled`, { isEnabled })
  },

  // 根据字典类型查询字典列表
  getByType(dictType) {
    return api.get('/api/dbmanager/data-dictionary/type', { params: { dictType } })
  },

  // 根据类型和编码查询字典项
  getByTypeAndCode(dictType, dictCode) {
    return api.get('/api/dbmanager/data-dictionary/item', { 
      params: { dictType, dictCode } 
    })
  },

  // 查询所有字典类型
  getAllTypes() {
    return api.get('/api/dbmanager/data-dictionary/types')
  },

  // 根据类型和编码查询标签
  getLabelByTypeAndCode(dictType, dictCode) {
    return api.get('/api/dbmanager/data-dictionary/label', { 
      params: { dictType, dictCode } 
    })
  },

  // 根据类型和标签查询编码
  getCodeByTypeAndLabel(dictType, dictLabel) {
    return api.get('/api/dbmanager/data-dictionary/code', { 
      params: { dictType, dictLabel } 
    })
  }
}

export default dataDictionaryApi